Openwrt的IPV6 NAT的实现

您所在的位置:网站首页 openwrt 无法获取公网ipV4 Openwrt的IPV6 NAT的实现

Openwrt的IPV6 NAT的实现

2023-08-11 04:23| 来源: 网络整理| 查看: 265

Openwrt’s implementation of IPV6 NAT

文章同时上传于本人独立博客 wherelse.cc,欢迎访问

身处校园网环境,只能通过 PPPOE 获取到一个 /64 的 IPV6 地址,如果想使用路由器则只能通过 IPV6 NAT 或者 relay 中继的方式获得地址。relay方式可以获得公网地址,但是我尝试了很多次,即时获得了公网地址,也不能成功的上网,不知问题出在何处,转而继续研究 IPV6 NAT。

IPV6 NAT 其实并不推荐,因为路由下的设备就不能获得公网的 IPV6 地址了,就失去了使用 IPV6 的一大意义,这个只推荐在校园网环境下折中这样使用了,公网家庭宽带条件下还是推荐使用穿透模式或者直接通过 DHCPV6 直接分发公网 IPV6 地址。

基本配置

我这里使用的 Openwrt 的版本是 Lienol 的 19.07 ,下面的方法在我使用的这个镜像中成功实现。

在 网络->接口 中, 设置全局网络选项中的 IPv6 ULA 前缀 , 将其改为:dd00:101:101::/48。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f6dT74V1-1596008642870)(file://D:/OneDrive/wherelse-blog/post-images/1589680428375.png)]在 网络->接口->LAN 中,设置 DHCP 服务器,将路由器通告服务、DHCPv6 服务选为服务器模式,NDP 代理选为已禁用,DHCPv6 模式选为无状态+有状态,同时勾选 总是通过默认路由。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在 网络->防火墙->自定义规则 中添加以下内容: WAN6=pppoe-wan LAN=br-lan ip6tables -t nat -A POSTROUTING -o $WAN6 -j MASQUERADE ip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT ip6tables -A FORWARD -i $LAN -j ACCEPT

WAN6=pppoe-wan 这里需要根据自己路由器的实际情况进行修改,如果是 PPPOE 拨号,则一般为 pppoe-wan 。

一部分情况下,NAT 就已经可以使用了,但是有时因为路由表的原因还是会导致无法上网,需要进行进一步的处理。这里开始需要使用 SSH 或者网页的 TTYD 终端连接到路由器。

进一步配置 在终端中输入:ip -6 route, 查看自己的 IPV6 网关,在 PPPOE 拨号情况下正常的网关应该类似于: default via fe80::96db:daff:fe3e:8fcf dev pppoe-wan proto ra metric 1024 ······

但是可能会存在错误的网关,如:

default from 2001:xxx:xxxx:xxxx::/64 via fe80::96db:daff:fe3e:8fcf dev pppoe-wan proto static metric 512 pref medium

这些会导致路由可以正常使用 IPV6 而通过 NAT 分配的设备无法正常使用 IPV6,我们需要使用脚本将错误的网关进行更改。

添加网关修改脚本。在终端中输入: vi /etc/hotplug.d/iface/99-ipv6, 进入编辑界面,将以下内容复制进去: #!/bin/sh [ "$ACTION" = ifup ] || exit 0 iface=wan6 [ -z "$iface" -o "$INTERFACE" = "$iface" ] || exit 0 # Bad route 1 bad=$(ip -6 route show default | grep -v "pppoe-wan" | sed 's/expire.*//') logger -t IPv6 "Old IPv6 route w/o PPPoE: $bad" if [ "x$bad" != "x" ]; then logger -t IPv6 "Remove old IPv6 route..." status=$(ip -6 route delete $bad 2>&1) logger -t IPv6 "Done: $status" fi # Bad route 2 good=$(ip -6 route show default | grep "pppoe-wan" | sed 's/from [^ ]* //' | head -n1) logger -t IPv6 "Good route is: $good" logger -t IPv6 "Add good IPv6 route..." status=$(ip -6 route add $good 2>&1) logger -t IPv6 "Done: $status"

使用 :wq 保存退出。

然后为脚本赋予可执行权限: chmod +x /etc/hotplug.d/iface/99-ipv6 重启路由,完成配置。 参考文章

https://gitlab.com/XDOSC/WIFI/-/wikis/tips/ipv-6-router https://www.jianshu.com/p/eb07eaac6167



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3